from django.urls import path
from . import views

app_name = 'blog'

urlpatterns = [
    #     Шаблоны URL-адресов позволяют соотносить URL-адреса с представлениями.
    # Шаблон URL-адреса состоит из строкового шаблона, представления и, оп-
    # ционально, имени, которое позволяет именовать URL-адрес в масштабе всего
    # проекта.

    # шаблон URL-адреса не принимает никаких аргументов и соотносится 
    # с представлением post_list.
    path('', views.post_list, name='post_list'),
    # Тегирование. Откройте файл urls.py приложения blog, закомментируйте основанный на
    # классе шаблон URL-адреса PostListView и раскомментируйте представление post_list
    # Добавьте следующий ниже дополнительный шаблон URL-адреса, чтобы
    # отображать список постов по тегу:
    path('tag/<slug:tag_slug>/',
        views.post_list, name='post_list_by_tag'),

    # Как вы видите, оба шаблона указывают на одно и то же представление, но
    # у них разные имена. Первый шаблон будет вызывать представление post_list
    # без каких-либо опциональных параметров, тогда как второй шаблон будет
    # вызывать это представление с параметром tag_slug. Конвертер путей slug
    # используется для сочетания с параметром, представленным строковым лите-
    # ралом в нижнем регистре с буквами или цифрами ASCII, а также символами
    # дефиса и подчеркивания.
    
    # Далее. Поскольку используется представление post_list, отредактируйте шаблон
    # blog/post/list.html.

    # - - - - - - - - - - - - - - - - -
    # Использование представления на основе класса
    # для отображения списка постов (см. начало во views.py)
    # Заменим на
    # path('', views.PostListView.as_view(), name='post_list'),
    # далее необходимо соответствующим образом отредактировать шаблон post/list.html
    # - - - - - - - - - - - - - - - - -

    # Для захвата значений из URL-адреса используются угловые скобки.
    # шаблон соотносится с представлением
    # post_detail и принимает только один аргумент id, который совпадает с це-
    # лым числом, заданным целым числом конвертора путей int
    # path('<int:id>/', views.post_detail, name='post_detail'),
    
    # Меняем для
    # Создание дружественных для поисковой оптимизации
    # URL-адресов постов см. пояснения в models.py
    path('<int:year>/<int:month>/<int:day>/<slug:post>/',
        views.post_detail,
        name='post_detail'),
    # - - - - - - - - - - - - - - - - -
    # Отправка электронных писем с помощью Django
    path('<int:post_id>/share/',
        views.post_share, name='post_share'),
    #     Прорисовка форм в шаблонах
    # После того как была создана форма, запрограммировано представление
    # и добавлен шаблон URL-адреса, не хватает только одного – шаблона пред-
    # ставления.
    # Внутри каталога blog/templates/blog/post/ создайте новый файл и назовите
    # его share.html.
    # - - - - - - - - - - - - - - - - -
    # Добавление комментариев на сайт
    path('<int:post_id>/comment/',
        views.post_comment, name='post_comment'),
    # Теперь создадим необходимые шаблоны 
    #     Мы создадим шаблон комментарной формы, которая будет использоваться
    # в двух местах:
    # •• в шаблоне детальной информации о посте, ассоциированном с пред-
    # ставлением post_detail, чтобы пользователи могли публиковать ком-
    # ментарии;
    # •• в шаблоне комментария к посту, ассоциированном с представлением
    # post_comment, чтобы отображать форму снова, если в форме есть какие-
    # либо ошибки.  
    #     Мы создадим шаблон формы и будем использовать шаблонный тег {% include
    # %}, чтобы вставлять его в два других шаблона.
    # Внутри каталога templates/blog/post/ создайте новый каталог includes/.
    # В этот каталог добавьте новый файл и назовите его comment_form.html.
    path('search/', views.post_search, name='post_search'),
]

